<<<(main)#if !defined($(base_name)_STRUCT_H_INCLUDED_H)
#define $(base_name)_STRUCT_H_INCLUDED_H

namespace $(service_name)
{
<<<(enums)<<<(comments)//$(comment)
>>>enum $(enum_name)
{
<<<(enum_members)	$(member_name), <<<(comments)//$(comment)
>>>>>>};
>>>

<<<(structs)<<<(comments)//$(comment)
>>>struct $(struct_name)
{
<<<(struct_members)	$(type_name) $(member_name); <<<(comments)//$(comment)
>>>>>>
	$(struct_name)();
<<<(none,have_struct_member)	$(struct_name)(<<<(struct_members)<<<(none,!is_first), >>>$(const_member_ref_type) $(member_name)_>>>); >>>
};
<<<(none,is_key)bool operator < (const $(struct_name)& l, const $(struct_name)& r);
bool operator == (const $(struct_name)& l, const $(struct_name)& r);
bool operator != (const $(struct_name)& l, const $(struct_name)& r);>>>
>>>
};

<<<(enums)void operator <<= (O_STREAM& os, const $(service_name)::$(enum_name)& v);
void operator >>= (I_STREAM& is, $(service_name)::$(enum_name)& v);
>>>
<<<(structs)void operator <<= (O_STREAM& os, const $(service_name)::$(struct_name)& v);
void operator >>= (I_STREAM& is, $(service_name)::$(struct_name)& v);
>>>

#endif // !defined($(base_name)_STRUCT_H_INCLUDED_H)>>>